Laravel 5でAPIをつくる
最も簡単なAPI
routes/api.phpにルーティングを定義する
より込み入ったことをやる場合にはControllerに処理を切り出したくなる(関心の分離) MiddlewareをControllerのメソッド全てに一括して設定できる
Controllerをつくる
知見
公式docのSpecifying The Resource Modelにある通り、idなどを受け取る代わりに、idでfind()した結果のEloquentをDIすることができる(すごい) code:php
public function show(int $id) // の代わりに
public function show(TweetEloquent $tweet) {} // idで解決されたEloquentを使うことができる
簡単なアプリを作るときは便利かもしれない
JSONで返したい。レスポンスを作りたい
(簡単な方法)ヘルパメソッドを使う
API Resourcesを使う
コントローラでEloquentをつかうなら便利そうkadoyau.icon
バリデーションがしたい
パスパラメータにはmiddlewareでバリデーションができる
クエリパラメータでもできる?未調査
クエリパラメータではValidateorが使える
IntelliJで補完が効かなくてつらい><
バリデーションが失敗したときのエラー
外部向けのAPIを作る際には認証をしたいときもある
api/以下にリクエストしてるのにjsonじゃなくてHTMLが帰ってくる
Acceptヘッダを追加するとエラー時もJSONで返る
curl -H "accept: application/json"
Middlewareでaccept headerをつける解決策